const StringType *str = s;
unsigned long len = Base64EncodeBufferSize(str->len);
- uint8_t encoded_data[len];
- if (Base64Encode((unsigned char *)str->ptr, str->len,
- encoded_data, &len) != SC_BASE64_OK)
+ if (len + 2 > out_size) {
+ // linefeed and final zero
+ return 0;
+ }
+ if (Base64Encode((unsigned char *)str->ptr, str->len, (uint8_t *)out, &len) != SC_BASE64_OK)
return 0;
- strlcpy(out, (const char *)encoded_data, out_size);
strlcat(out, "\n", out_size);
return strlen(out);
}